package br.gov.mi.corporativo.dominio.boundary.comum.sistema;

import java.util.List;

import javax.jws.WebService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.gov.mi.corporativo.dominio.entidade.comum.Sistema;
import br.gov.mi.corporativo.dominio.repositorio.comum.SistemaRepositorio;
import br.gov.mi.infraestrutura.crud.CrudServicoImpl;

@Component
@Transactional(readOnly=true)
@WebService(endpointInterface = "br.gov.mi.corporativo.dominio.boundary.comum.sistema.SistemaEndPoint")
public class SistemaServico extends
		CrudServicoImpl<Sistema, Long, SistemaRepositorio> implements
		SistemaEndPoint {
	
	@Autowired
	public void setRepositorio(SistemaRepositorio repositorio) {
		super.setRepositorio(repositorio);
	}

	public Sistema recuperarPorNome(String nome) {
		return repositorio.findByNmSistema(nome);
	}

	public Sistema recuperarPorSigla(String sigla) {
		return repositorio.findBySgSistema(sigla);
	}

	public List<Sistema> recuperarPorStatus(String status) {
		return repositorio.findByStAtivo(status);
	}

	@Override
	public List<Sistema> listarSistemaPorSigla(String sigla) {
		return repositorio.findBySgSistemaContainingIgnoreCase(sigla);
	}

	@Override
	public List<Sistema> listarSistemaPorNome(String nome) {
		return repositorio.findByNmSistemaContainingIgnoreCase(nome);
	}

	@Override
	public Sistema recuperarSistemaMaiorId() {
		return repositorio.findSistemaComMaiorId();
	}

	@Override
	public Sistema incluirSistema(Sistema sistema) {
		if(repositorio.exists(sistema.getIdSistema()))
			return new Sistema();
		
		return repositorio.save(sistema);
	}

	@Override
	public void excluirSistema(Long id) {
		if(repositorio.exists(id))
			repositorio.delete(id);
		
	}

}
